Pràctiques de «Tecnologia i digitalització» amb Blockly@Arduino / ESP32 / WeMos D1 R32
Comunicacions bluetooth
Anem a comunicar-nos per Bluetooth des del mòbil Android amb la targeta ESO32 per dir-li que engegue un Led o ature un led al rebre un caràcter per Bluetooth. Aquest és el cas més senzill però atenció modificar aquest cas per controlar el motor de un cotxe teledirigit és elemental.
Al telèfon Android:
- Cal instal·lar el Bluetooth terminal.
- Cal habilitar el dispositiu Bluetooth del telèfon.
A l'ordinador:
- Cal tindre instal·lat Arduino IDE com s'explica a les primeres seccions d'aquest tutorial.
Construïm el següent esquema elèctric amb el nostre ESP32.
El Bluetooth ja està incorporat dins del ESP32, no cal cap HC06 com en Arduino.
Ara obrim l'IDE i escrivim el programa següent:
//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial
// Hem afegit un Led que controlarem des del terminal del telefon
// on rebrem missatges indicant les accions fetes.
// Carles Ferrando - 2020
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT; //Definim el serial Bluetooth del telefon.
int pinLed = 18; //led a controlar
int valorRebut; // Variable que mostrara el valor rebut amb el serial Bluetooth per ESP32
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_Robotet"); //Nom del dispositiu Bluetooth
Serial.println("The device started, now you can pair it with bluetooth!");
pinMode(pinLed, OUTPUT); // Definim el led que es una eixida
}
void loop() {
if (Serial.available()) { // Comprova si funciona serial de Arduino IDE
SerialBT.write(Serial.read()); // llegeix serial
}
if (SerialBT.available()) { // si tenim dispoible el serial Bluetooth
Serial.print("Lectura Bluetooth ="); // escriu al serial de Arduino IDE
valorRebut = SerialBT.read(); // llegeix i guarda el valor en valorRebut
Serial.println(valorRebut);
if (valorRebut == 49){ // Si escrivim "1" al terminal BT el serial ESP32 rep el valor "49"
// i llavors es compleix aquesta condició
digitalWrite(pinLed,HIGH); // engega el led
SerialBT.println("Led engegat"); // avisa el serial Bluetooth per terminal telèfon que el led esta engegat
delay(1000); // atura el programa 1 s
}
if (valorRebut == 48){ // Si escrivim "0" al terminal BT el serial ESP32 rep el valor "48"
// i llavors es compleix aquesta condició
digitalWrite(pinLed,LOW); // engega el led
SerialBT.println("Led aturat"); // avisa el serial Bluetooth per terminal telèfon que el led està aturat
delay(1000); // atura el programa 1 s
}
// Ací baix pot afegir mes if per nous leds o per controlar varis motors amb una targeta L298
}// final if del serial Bluetooth
delay(20); // espere 20 ms entre cicles
} // final del cicle loop i del programa
Si mirem el Monitor serie del Bluetooth al telèfon Android veuràs l'execució del programa.
i ara mira la mateixa execució al monitor serie IDE d'Arduino mostrant el que rep ESP32 connectat a l'ordinador.
Pots veure que a l'enviar un "0" per telèfon ESP32 rep un "48".
Les xifres següents son 13 , i 10 després de cada caràcter enviat.
Pots veure que a l'enviar un "1" per telèfon ESP32 rep un "49".
Les xifres següents son 13 , i 10 després de cada caràcter enviat.
Mira els altres caràcters enviats i que ha rebut ESP32.
Així ja saps com mirar els codis equivalents per programar en ESP32 les altres
accions d'un parell de motors o un altre dispositiu a controlar.
Llicenciat sota la Llicència Creative Commons Reconeixement CompartirIgual 4.0